package com.webvihar.access2db.builders;

import java.util.List;

import com.webvihar.access2db.dbutils.AbstractDataTypes;
import com.webvihar.access2db.model.TableField;
import com.webvihar.access2db.model.TableRowItem;

public abstract class AbstractQueryBuilder {
	
	public abstract AbstractDataTypes getDataTypes();
	
	public abstract String getShowDatabasesQuery();
	public abstract String getShowTablesQuery();
	public abstract String getAddDatabaseQuery(String dbName);
	public abstract String getEditDatabaseQuery(String oldDbName, String newDbName);	 
	public abstract String getDeleteDatabaseQuery(String dbName);
	public abstract String getShowTableData(String tableName);
	public abstract String getInsertTableDataQuery(String tableName, TableRowItem rowItem);
	public abstract String getUpdateTableDataQuery(String tableName, TableRowItem oldRowItem, TableRowItem newRowItem);
	public abstract String getDeleteTableDataQuery(String tableName, TableRowItem oldRowItem);
	public abstract String getCreateTableQuery(String tableName, String comment, List<TableField> fields);
	public abstract String getEditTableQuery(String oldTableName, String tableName, List<TableField> oldFields, List<TableField> newFields);
	public abstract String getDeleteTableQuery(String tableName);
	public abstract String getTableDescriptionQuery(String tableName);
}
